---
title: Application architecture
summary: Full layer diagram, architectural patterns, and cross-library integration points for LegalMaintenance.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-21
---

# Application architecture

LegalMaintenance follows a layered legacy WebForms + BOF (Business Object Framework) architecture, in which menu-driven UI screens drive `cls*Manager` objects that flow through a template-method lifecycle down to shared business/domain libraries and external service gateways.

## Layer diagram

The following diagram shows the layered composition of LegalMaintenance from the WebForms UI down to shared business/service libraries and external systems.

```mermaid
flowchart TD
	UI["LegalMaintenance WebForms<br>(frmAttorneyProfile, frmAttorneyAssignment,<br>frmLegalPerson, frmOtherFirms,<br>frmHearingLocation, frmRotation,<br>frmPrintPreview, DataHelper.aspx)"]
	APPLEGAL["SAIF.Application.Claim.Legal<br>(LegalManagerBase, attorney/legal-person/<br>hearing-location managers, LegalNet managers)"]
	APPCLAIM["SAIF.Application.Claim<br>(ClaimAppManager, ClaimSecurity)"]
	APPBASE["SAIF.Application<br>(AppManagerBase, UserAccess, data portals)"]
	BIZLEGAL["SAIF.Business.Claim.Legal<br>(legal case/schedule/appeal/cost/notes)"]
	BIZCLAIM["SAIF.Business.Claim<br>(benefit/award/PPD/transfer)"]
	BIZTASKS["SAIF.Business.Tasks /<br>SAIF.Business.Tasks.Claim"]
	BIZPOLICY["SAIF.Business.Policy /<br>SAIF.Business.View.Policy"]
	BIZPROVIDER["SAIF.Business.View.Provider"]
	BIZUTIL["SAIF.Business.Utilities"]
	SVCPRINT["SAIF.Services.Printing"]
	SVCIMG["SAIF.Services.Imaging.Import"]
	SVCAPPWORX["SAIF.Services.Appworx"]
	AD[("Active Directory")]
	ORA[("Oracle database")]
	SQLSVR[("SQL Server / BDS")]
	EWS[("Exchange Web Services")]
	XP[("xPression / MSMQ / SSRS")]
	APPWORXQ[("Appworx job queue")]

	UI --> APPLEGAL
	APPLEGAL --> APPCLAIM
	APPCLAIM --> APPBASE
	APPLEGAL --> BIZLEGAL
	BIZLEGAL --> BIZCLAIM
	BIZLEGAL --> BIZPOLICY
	APPLEGAL --> BIZTASKS
	APPCLAIM --> BIZTASKS
	APPLEGAL --> BIZPROVIDER
	BIZPOLICY --> BIZUTIL
	UI --> SVCPRINT
	APPLEGAL --> SVCAPPWORX
	SVCPRINT --> SVCIMG
	APPBASE --> AD
	APPBASE --> ORA
	BIZPOLICY --> SQLSVR
	BIZPROVIDER --> SQLSVR
	BIZLEGAL --> EWS
	SVCPRINT --> XP
	SVCAPPWORX --> APPWORXQ
```

## Layer descriptions

| Layer | Libraries | Responsibility |
| --- | --- | --- |
| UI/front-end | LegalMaintenance (`frmAttorneyProfile`, `frmAttorneyAssignment`, `frmLegalPerson`, `frmOtherFirms`, `frmHearingLocation`, `frmRotation`, `frmPrintPreview`, `DataHelper.aspx`, `SessionPing.aspx`) | Menu-driven WebForms screens, shared master page, and common page ancestor (`AppViewPageBase`/`clsLegalMaintenanceAncestor`); each screen instantiates and drives one or more `cls*Manager` objects |
| Application | [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md), [SAIF.Application.Claim](../libraries/saif-application-claim/overview.md), [SAIF.Application](../libraries/saif-application/overview.md) | Legal-domain managers (attorney tables, legal person, hearing locations, profile maintenance, 17 LegalNet managers), claim context/security, and base manager lifecycle/AD access cache/data-portal provisioning |
| Business/domain | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md), [SAIF.Business.Claim](../libraries/saif-business-claim/overview.md), [SAIF.Business.Tasks](../libraries/saif-business-tasks/overview.md), [SAIF.Business.Tasks.Claim](../libraries/saif-business-tasks-claim/overview.md), [SAIF.Business.Policy](../libraries/saif-business-policy/overview.md), [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/overview.md), [SAIF.Business.View.Provider](../libraries/saif-business-view-provider/overview.md), [SAIF.Business.Utilities](../libraries/saif-business-utilities/overview.md) | Classic BOF business objects with nested `Criteria` classes and mostly Oracle-only data access; task lifecycle invoked as an assignment side effect; policy/provider lookups; shared formatting helpers |
| Service/gateway | [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md), [SAIF.Services.Imaging.Import](../libraries/saif-services-imaging-import/overview.md), [SAIF.Services.Appworx](../libraries/saif-services-appworx/overview.md) | xPression SOAP/MSMQ distribution and SSRS rendering; imaging DTO contract consumed by printing; Appworx batch-job submission façade |

## Key patterns
- Template-method manager lifecycle: `Initialize → OnCreateDataLayer → OnCheckSecurity → OnRetrieve/OnWrite`.
- BOF `Criteria`-driven data portals, primarily Oracle, with SQL Server/BDS used for select policy/provider paths.
- AD-group-based authorization checks performed in the application layer rather than the UI.
- Menu-driven navigation with no screen-level deep authorization (no deep-linking).
- Service gateways for print/imaging/batch invoked as terminal steps of business workflows.

## Integration points

| Integration | Type | Direction | Libraries involved |
| --- | --- | --- | --- |
| Active Directory group membership (`LNView`, `LNAdmin`, `LNCaseUpdate`, `LNConflict`, `LNExposure`, etc.) | Directory service | outbound | [SAIF.Application](../libraries/saif-application/overview.md), [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md) |
| Oracle database (primary store) | DB | outbound | [SAIF.Application](../libraries/saif-application/overview.md), [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md), [SAIF.Business.Claim](../libraries/saif-business-claim/overview.md) |
| SQL Server / BDS (policy/provider secondary store) | DB | outbound | [SAIF.Business.Policy](../libraries/saif-business-policy/overview.md), [SAIF.Business.View.Provider](../libraries/saif-business-view-provider/overview.md) |
| Exchange Web Services (attorney calendar sync) | API | outbound | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md) |
| xPression SOAP service and MSMQ (document distribution) | API/Message queue | outbound | [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md) |
| SSRS report rendering | API | outbound | [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md) |
| Appworx batch scheduler | DB stored procedure | outbound | [SAIF.Services.Appworx](../libraries/saif-services-appworx/overview.md) |
| Claim imaging/API client (`ImagingAPI.Client`) | API | outbound | [SAIF.Application.Claim](../libraries/saif-application-claim/overview.md) |

## Design constraints
- Authentication is IIS/Windows-integrated (NTLM); the application has no authentication code of its own.
- Authorization resolves through AD group membership checks evaluated mostly in lower-layer managers rather than at the web tier, so screen-level enforcement is inconsistent.*
- Screens are menu-driven with no deep-linking, so navigation-level access control depends on menu visibility rather than URL-level checks.
- Print/document distribution depends on a shared wire-format contract (`clsImageImport.ToString()`) that all upstream libraries must produce correctly.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Data model](data-model.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- LegalMaintenance web application (LegalMaintenance/*.aspx.vb)
- [SAIF.Application](../libraries/saif-application/overview.md)
- [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/overview.md)
- [SAIF.Business.Claim](../libraries/saif-business-claim/overview.md)
- [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md)
- [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/overview.md)
- [SAIF.Business.View.Provider](../libraries/saif-business-view-provider/overview.md)
- [SAIF.Services.Printing](../libraries/saif-services-printing/overview.md)
- [SAIF.Services.Appworx](../libraries/saif-services-appworx/overview.md)
- [SAIF.Services.Imaging.Import](../libraries/saif-services-imaging-import/overview.md)
